/**
 * Configuracion del JsonStore para aplicarlo a HTS
 * @class enlace.data.JsonStore
 * COnfigura la forma de llamadas al server, controlador - metodo
 * ---------------------------------------------<br>
 *        <b>8 de noviembre</b> | Creaci�n de la clase. 
 * 
 * @extends Ext.data.Store
 * @autor Ing. Josu� Hern�ndez G�mez<br>
 *        joshua@extjs.mx<br>
 *        http://www.joshua.com.mx
 * @fecha 8 de noviembre 2010. Mexico DF
 * 
 */

Ext.ns("enlace.data.JsonStore");
enlace.data.JsonStore=Ext.extend(Ext.data.Store,{
	
	/**
	 * @cfg String clase Nombre el controlador en PHP
	 */
	clase:"",
	
	/**
	 * @cfg String metodo Nombre del metodo del controlador
	 */
	metodo:"",
	
	/**
	 * @cfg String idRecords Nombre del identificador para cada uno de records recibidos. 
	 * Se sustituye por el id del Reader
	 */
	idRecords:undefined,
	
	
	/**
	 * @cfg Object parametros Objeto de parametros que son enviados cada que se recarga el store
	 */
	parametros:undefined,
	
    constructor: function(config){
		config=config|| {};
		this.clase= (Ext.isEmpty(config.clase))? this.clase: config.clase;
		this.metodo= (Ext.isEmpty(config.metodo))? this.metodo: config.metodo;
		 
        enlace.data.JsonStore.superclass.constructor.call(this, Ext.apply(config, {
			url: this.clase+"/"+this.metodo,
            reader: new Ext.data.JsonReader(Ext.apply(config,{
                root:"data",
				id: this.idRecords || "id",
                totalProperty: 'numFilas'
            }))
        }));
        
        this.on({
			scope:this,
			beforeload: function (st,params){
				var params={};
				if(!Ext.isEmpty(this.parametros)){
					Ext.apply(st.baseParams,this.parametros);
				}
			}
		});
    },
    
    
	/**
     * @method setParams Asigana los parametros que son enviados por POST al server cada que recarga el store
     * @param {Object} params Objeto de los parametros que son deseados enviar 
     **/
    setParams: function (p){
    	this.parametros=p;
    }
});